In both a tightly coupled and a loosely coupled environment, messages are needed to orchestrate the execution of each transaction. This is particularly true with partitioned systems where all updates are done by the single server for a partition, lock management for resources of the partition is done at this server and locks are held by transactions running at the server.
One method of synchronizing tasks in a data sharing environment is known as locking. By this method, a task first obtains access to a data structure known as a lock and then indicates the type of access that is desired in order to either read or modify data in the database that is protected by the lock. The task then has access to the protected data with the specified type of access. Other tasks are prevented from accessing the protected data until a lock is obtained.
Currently, many systems use a Multipath Lock Facility or MPLF which is a kind of input/output device. MPLF serializes accesses to locks resided on the same device. The performance and is also limited by the input/output latency. To alleviate this performance problem in some installations, locks are distributed among multiple MPLFs so that concurrent accesses can be achieved. However, as the lock request rate increases, the number of MPLFs required to maintain a reasonable system throughput also increases and the cost becomes prohibitive. As a consequence a better locking facility is needed that can address these cost and performance issues. The facility provides a means to construct an adjunct lock table for, in one embodiment up to 64 users, based on the list structure. There is one list entry for each lock that is currently being held by some users. List entries are named so that the lock name is stored in the associated list entry name object. Information about lock state, pending lock requests, lock holders, and first requestor in the waiting queue of a particular lock is maintained in the list lock entry.
This application is being filed at the same time as related applications Ser. Nos.: 09/143,328; 09/143,329; and 09/141,544.